#pragma once
#include "Log.h"
#include <glad/glad.h>

#include <GLFW/glfw3.h>

#include <iostream>
#include <string>

#include "Plane.h"
#include "Cube.h"
#include "Light.h"

namespace GL
{
    class Application
    {
    public:
        Application();
        ~Application();
        int Start();
        void Run();

    private:
        struct WindowData
        {
            unsigned int Width;
            unsigned int Height;
            std::string Title;
            WindowData(unsigned int width = 600, unsigned int height = 400, std::string title = "title") : Width(width), Height(height), Title(title) {}
        };
        WindowData m_Data;
        GLFWwindow *m_Window;
        float detalTime = 0.0f, lastUpdateTime = 0.0f;
    };

    Application *CreateApplication();

}